home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Technotools
/
Technotools (Chestnut CD-ROM)(1993).ISO
/
os2tools
/
os2kit1
/
clnzip.c
< prev
next >
Wrap
C/C++ Source or Header
|
1989-11-25
|
9KB
|
286 lines
/* ATKINSON - HOME COMPUTER - 414-543-8929 */
#define INCL_DOS
#include <os2.h>
USHORT cbWritten;
char achFailName[128];
RESULTCODES rescResults;
char readbuf[85];
char *p;
HDIR hdir = 0xFFFF;
FILEFINDBUF findbuf;
USHORT usSearchCount = 1;
int code;
int find_result;
int exec_result;
char *zip_string;
char *path;
char *temp_path;
char *error_log;
char *error_message;
ULONG ulFilePointer = 0;
HFILE open_fh;
USHORT usAction;
int open_result;
char *zip_file;
char msg_buf[100];
FILESTATUS fstsFile;
int get_info;
int set_info;
int dos_close;
USHORT usAttribute;
int mode_result;
char szFoundFile[128];
int search_result = 0;
int error_check = 0;
main(argc, argv)
int argc;
char *argv[];
{
DosWrite(1,"\r\nCLNZIP - version 1.00 - OS/2\r\n",32,&cbWritten);
path = (char *) malloc(128);
memset(path,0,128);
strcpy(path, argv[1]);
memset(readbuf,0,sizeof(readbuf));
strcpy(readbuf, "CMD.EXE");
temp_path = (char *) malloc(128);
memset(temp_path,0,128);
strcpy(temp_path, strupr(path));
error_log = (char *) malloc(128);
memset(error_log,0,128);
error_message = (char *) malloc(128);
memset(error_message,0,128);
zip_file = (char *) malloc(128);
memset(zip_file,0,128);
zip_string = (char *) malloc(128);
memset(zip_string,0,128);
p = (&readbuf[strlen(readbuf)]+1);
if (DosSearchPath(SEARCH_ENVIRONMENT,"PATH","PKZIP.EXE",szFoundFile,
sizeof(szFoundFile)) == 0)
{
}
else
{
DosWrite(1, "\r\nPKZIP.EXE not found on PATH\r\n",29,&cbWritten);
search_result = 1;
}
if (DosSearchPath(SEARCH_ENVIRONMENT, "PATH", "CLNZIP.EXE", szFoundFile,
sizeof(szFoundFile)) == 0)
{
justpathname(szFoundFile);
}
else
{
DosWrite(1, "\r\nCLNZIP.EXE not found on PATH\r\n",32,&cbWritten);
search_result = 1;
}
if (search_result == 1)
{
DosExit(EXIT_THREAD, 0);
}
if (argc != 3)
{
usage();
DosExit(EXIT_THREAD, 0);
}
else
{
strcpy(zip_string,strupr(argv[2]));
}
if ((strstr(zip_string, "*.*") != 0x00) ||
(strstr(zip_string, "*.???") != 0x00) ||
(strstr(zip_string, "????????.*") != 0x00) ||
(strstr(zip_string, "????????.???") != 0x00))
{
DosWrite(1,"\r\nWILDCARD warning - ",21,&cbWritten);
DosWrite(1,zip_string,strlen(zip_string),&cbWritten);
DosWrite(1,"\r\n",2,&cbWritten);
usage();
DosExit(EXIT_THREAD,0);
}
findfirstzip();
if (find_result == 0)
findrestzip();
else
usage();
if (error_check != 0)
{
memset(error_message, 0, 128);
strcpy(error_message, "\r\nSee ");
strcat(error_message, szFoundFile);
strcat(error_message, "PKERRORS.LOG\r\n");
DosWrite(1,error_message,strlen(error_message),&cbWritten);
}
DosExit(EXIT_THREAD,0);
}
findfirstzip()
{
find_result = DosFindFirst(path,&hdir,0x00,&findbuf,sizeof(findbuf),
&usSearchCount,0L);
if (find_result == 0)
{
justpathname(temp_path);
strcpy(zip_file, temp_path);
strcat(zip_file, findbuf.achName);
mode_result = DosQFileMode(zip_file,&usAttribute,0L);
open_result = DosOpen(zip_file, &open_fh, &usAction, 0L, 0x00, FILE_OPEN,
OPEN_ACCESS_READWRITE | OPEN_SHARE_DENYNONE, 0L);
if (open_result == 0)
{
get_info = DosQFileInfo(open_fh, 1, &fstsFile, sizeof(fstsFile));
dos_close = DosClose(open_fh);
strcpy(p, "/C PKZIP.EXE -D ");
strcat(p, temp_path);
strcat(p,findbuf.achName,strlen(findbuf.achName));
strcat(p," ");
strcat(p,zip_string);
exec_result = DosExecPgm(achFailName, sizeof(achFailName), EXEC_SYNC,
readbuf, 0, &rescResults, readbuf);
if ((open_result == 0) && (get_info == 0) && (dos_close == 0))
{
open_result = DosOpen(zip_file, &open_fh, &usAction, 0L, 0x00,
FILE_OPEN, OPEN_ACCESS_READWRITE | OPEN_SHARE_DENYNONE,
0L);
set_info = DosSetFileInfo(open_fh, 1, &fstsFile, sizeof(fstsFile));
dos_close = DosClose(open_fh);
mode_result = DosSetFileMode(zip_file,usAttribute,0L);
}
if (rescResults.codeResult != 0)
{
memset(error_message,0,128);
strcpy(error_message, temp_path);
strcat(error_message, findbuf.achName);
strcat(error_message, "\r\n");
memset(error_log,0,128);
strcpy(error_log, szFoundFile);
strcat(error_log, "PKERRORS.LOG");
open_result = DosOpen(error_log, &open_fh, &usAction,0L, 0x00,
FILE_OPEN | FILE_CREATE,
OPEN_ACCESS_READWRITE | OPEN_SHARE_DENYNONE, 0L);
DosChgFilePtr(open_fh, 0L, FILE_END, &ulFilePointer);
DosWrite(open_fh,error_message,strlen(error_message),&cbWritten);
dos_close = DosClose(open_fh);
error_check = 1;
}
}
}
}
findrestzip()
{
while (DosFindNext(hdir,&findbuf,sizeof(findbuf),&usSearchCount) == 0)
{
strcpy(zip_file, temp_path);
strcat(zip_file, findbuf.achName);
mode_result = DosQFileMode(zip_file,&usAttribute,0L);
open_result = DosOpen(zip_file, &open_fh, &usAction, 0L, 0x00, FILE_OPEN,
OPEN_ACCESS_READWRITE | OPEN_SHARE_DENYNONE, 0L);
if (open_result == 0)
{
get_info = DosQFileInfo(open_fh, 1, &fstsFile, sizeof(fstsFile));
dos_close = DosClose(open_fh);
strcpy(p, "/C PKZIP.EXE -D ");
strcat(p, temp_path);
strcat(p,findbuf.achName,strlen(findbuf.achName));
strcat(p, " ");
strcat(p, zip_string);
exec_result = DosExecPgm(achFailName, sizeof(achFailName), EXEC_SYNC,
readbuf, 0, &rescResults, readbuf);
if ((open_result == 0) && (get_info == 0) && (dos_close == 0))
{
open_result = DosOpen(zip_file, &open_fh, &usAction, 0L, 0x00,
FILE_OPEN, OPEN_ACCESS_READWRITE | OPEN_SHARE_DENYNONE,
0L);
set_info = DosSetFileInfo(open_fh, 1, &fstsFile, sizeof(fstsFile));
dos_close = DosClose(open_fh);
mode_result = DosSetFileMode(zip_file,usAttribute,0L);
}
if (rescResults.codeResult != 0)
{
memset(error_message,0,128);
strcpy(error_message, temp_path);
strcat(error_message, findbuf.achName);
strcat(error_message, "\r\n");
memset(error_log,0,128);
strcpy(error_log, szFoundFile);
strcat(error_log, "PKERRORS.LOG");
open_result = DosOpen(error_log, &open_fh, &usAction,0L, 0x00,
FILE_OPEN | FILE_CREATE,
OPEN_ACCESS_READWRITE | OPEN_SHARE_DENYNONE, 0L);
DosChgFilePtr(open_fh,0L,FILE_END,&ulFilePointer);
DosWrite(open_fh,error_message,strlen(error_message),&cbWritten);
dos_close = DosClose(open_fh);
error_check = 1;
}
}
}
}
usage()
{
DosWrite(1,"\r\n",2,&cbWritten);
DosWrite(1,"Usage:",6,&cbWritten);
DosWrite(1,"\r\n\r\n",4,&cbWritten);
DosWrite(1,"CLNZIP x1 x2",12,&cbWritten);
DosWrite(1,"\r\n\r\n",4,&cbWritten);
DosWrite(1,"Where x1 is full path to ZIP file/s to clean",44,&cbWritten);
DosWrite(1,"\r\n\r\n",4,&cbWritten);
DosWrite(1,"Where x2 is file collection entry to delete",43,&cbWritten);
DosWrite(1,"\r\n\r\n",4,&cbWritten);
DosWrite(1,"Ex: CLNZIP C:\\FILES\\SOME*.ZIP *.BAK",37,&cbWritten);
DosWrite(1,"\r\n\r\n",4,&cbWritten);
DosWrite(1,"Ex: CLNZIP D:\\SOME*.ZIP COMMAND.COM",36,&cbWritten);
DosWrite(1,"\r\n",2,&cbWritten);
}
justpathname(temp_path)
char temp_path[];
{
char *path;
char *drive;
char *dir;
char *fname;
char *ext;
path = (char *) malloc(128);
drive = (char *) malloc(128);
dir = (char *) malloc(128);
fname = (char *) malloc(128);
ext = (char *) malloc(128);
memset(path,0,128);
memset(drive,0,128);
memset(dir,0,128);
memset(fname,0,128);
memset(ext,0,128);
strcpy(path,temp_path);
_splitpath(temp_path,drive,dir,fname,ext);
strcpy(path,drive);
strcat(path,dir);
strcpy(temp_path,path);
free(path);
free(drive);
free(dir);
free(fname);
free(ext);
}